package com.gxa.j259.springcloud.f.hystrix.controller;

import com.gxa.j259.springcloud.f.hystrix.config.FeignRequestHeaderConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

/**
 * @author thinknovo
 * @version 1.0
 */
// 调用一个子服务模块，需要在注解中指定，名字由client的yml文件定义
@FeignClient(value = "EUREKA-CLIENT-8861", configuration = FeignRequestHeaderConfig.class)
public interface ServiceFeignByCheck {
    /*
    这里需要几个要点：
    1.这里定义的路径作用是调用client中的接口
    2.这里的method即使只定义了get，在feign还是会检查client是否允许post请求，如果没有post请求将报错
    3.@RequestParam是绑定controller中的形式参数名，如果没有定义也会报错，
如果业务需要动态传递参数(可传可不传的情况)，则可以把@RequestParam(value = "name",required = false)
     */
    @RequestMapping(value = "/check",method = RequestMethod.GET,
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    Map selectClient(@RequestParam(value = "username", required = false) String name);
}
